package com.sunnada.btfvilg.util;

import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;

/**
 * MateCloud 手动代码生成器，基于 Mybatis Plus文档实现
 * 可参照：https://mp.baomidou.com/guide/generator.html
 * @author hcx
 */
public class MpGenerator {

    public static void main(String[] args) {
        // 代码生成器
        AutoGenerator mpg = new AutoGenerator();
        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        //填写项目地址   todo 需要修改
        String projectPath = "D:\\program\\java\\gongchengshijian";
        gc.setOutputDir(projectPath + "/src/main/java");

        //作者 todo 需要修改
        gc.setAuthor("zhengrr");
        //生成后是否打开资源管理器
        gc.setOpen(false);
        //重新生成时文件是否覆盖
        gc.setFileOverride(false);
        //去掉Service接口的首字母I（基于习惯和适配一些技术接口不加I）
        gc.setServiceName("%sService");
        //实体属性 Swagger2 注解
        gc.setSwagger2(true);

        mpg.setGlobalConfig(gc);

        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        /*
         * ORACLE:   jdbc:oracle:thin:@IP:PORT/DB
         * mysql:    jdbc:mysql://IP:PORT/DB
         */
        //todo 需要修改
        dsc.setUrl("jdbc:mysql://localhost:3306/english");
        // dsc.setSchemaName("public");
        //设置后会报错  无效的sql
        //dsc.setDbType(DbType.ORACLE_12C);
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        //todo 需要修改
        dsc.setUsername("root");
        dsc.setPassword("123123");
        mpg.setDataSource(dsc);

        // 包配置 todo 需要修改
        PackageConfig pc = new PackageConfig();
        pc.setParent("com.sunnada.btfvilg");
        pc.setEntity("entity");
        pc.setMapper("mapper");
        pc.setService("service");
        pc.setServiceImpl("service.impl");
        pc.setController("controller");
        mpg.setPackageInfo(pc);

        // 配置模板 todo 需要修改   注意确认模板中的名字以及项目名称
        TemplateConfig templateConfig = new TemplateConfig();
        templateConfig.setXml(null);
        templateConfig.setController(null);
        templateConfig.setEntity("/templates/entity.java.vm");
        templateConfig.setMapper("/templates/mapper.java.vm");
//        templateConfig.setMapper(null);
        templateConfig.setService("/templates/service.java.vm");
//        templateConfig.setService(null);
        templateConfig.setServiceImpl("/templates/serviceImpl.java.vm");
//        templateConfig.setServiceImpl(null);
        mpg.setTemplate(templateConfig);
        mpg.setTemplateEngine(new VelocityTemplateEngine());

        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        //要生成的表，todo 需要修改
        strategy.setInclude("sentence");
        strategy.setEntityLombokModel(true);
        strategy.setEntitySerialVersionUID(true);
        strategy.setEntityTableFieldAnnotationEnable(true);
        mpg.setStrategy(strategy);

        mpg.execute();
    }
}